#include <sstream>

#include <Klein/Shader/FragmentIdentifier.h>

FragmentIdentifier::FragmentIdentifier(const String& categoryName, const String& className, const String& name) :
	mCategoryName(categoryName),
	mClassName(className),
	mName(name)
{
}

FragmentIdentifier::FragmentIdentifier(const FragmentIdentifier& copy) :
	mCategoryName(copy.mCategoryName),
	mClassName(copy.mClassName),
	mName(copy.mName)
{
}

FragmentIdentifier::~FragmentIdentifier()
{
}

const String& FragmentIdentifier::GetCategoryName() const
{
	return mCategoryName;
}

const String& FragmentIdentifier::GetClassName() const
{
	return mClassName;
}

const String& FragmentIdentifier::GetName() const
{
	return mName;
}

String FragmentIdentifier::GetCategoryClassName() const
{
	OStringStream oss;
	oss << mCategoryName << L':' << mClassName;
	return oss.str();
}

String FragmentIdentifier::GetFragmentCompleteName() const
{
	OStringStream oss;
	oss << mCategoryName << L':' << mClassName << L':' << mName;
	return oss.str();
}
